<?php
class Shop_Model_Setjyuushomap extends Apm_Model_Base
{
	/**
	* パラメータ作成
	*
	* @access	public
	* @param	array
	* @return	void
	*/
	public function setMapParam(&$data,$params)
	{
		// 外部モデル呼び出し設定
		$loader = new Zend_Application_Module_Autoloader(array(
			'namespace' => 'Rstdtl',
			'basePath' => APPLICATION_PATH . '/modules/rstdtl',
		));
		// 物件詳細Baseモデル生成
		$this->_model_rstdtl_base = new Rstdtl_Model_Base();

		$data['iPosX'] = $this->_model_rstdtl_base->changeValue($params['x'],400);		// 経度
		$data['iPosY'] = $this->_model_rstdtl_base->changeValue($params['y'],400);		// 緯度
		$data['iScrWid'] = $this->_model_rstdtl_base->changeValue($params['W'],400);	// 地図画像(横幅)
		$data['iScrHgt'] = $this->_model_rstdtl_base->changeValue($params['H'],400);	// 地図画像(縦幅)
		$data['iScrAct'] = $this->_model_rstdtl_base->changeValue($params['clk'],2);	// 地図動作 1:ｸﾘｯｸ移動、2:ﾄﾞﾗｯｸﾞｽｸﾛｰﾙ

		// 地図縮尺設定
		if(is_numeric($params['scl']))
		{
			if($params['scl'] < 250)
			{
				$data['iScrCur'] = "500";
			}
			else if( 200000 < $params['scl'])
			{
				$data['iScrCur'] = "200000";
			}
			else{
				$data['iScrCur'] = $params['scl'];
			}
		}
		else
		{
			$data['iScrCur'] = 500;
		}

		// 地図URL
		$data['strSrc'] = Apm_Config_Shop::URL_JYUSHO_MAP . "&W=" .$data['iScrWid']."&H=".$data['iScrHgt'].
						"&SCL=".$data['iScrCur']."&CLK=".$data['iScrAct']."&X=".$data['iPosX']."&Y=".$data['iPosY']."&TAB=A_STA2";
	}

	/**
	* 座標取得
	*
	* @access	public
	* @param	array
	* @return	void
	*/
	public function getDefaultPoint($params)
	{
		$db_params = array();

		$sql = "";
		$sql .= $this->getDefaultPointSql($params, $db_params);

		return $this->dbGetData($sql, $db_params);
	}

	/**
	* 座標情報更新
	*
	* @access	public
	* @param	array
	* @return	void
	*/
	public function setCustomPoint($params)
	{
		$db = $this->getDbConnection();
		//トランザクションStart
		$this->startTransaction($db);

		try {

			// 座標情報更新
			$this->updDefaultPointSql($params, $db);

			// M01JYUUSHO_LOCATION存在チェック
			$data = $this->getCheckLocationSql($params, $db);

			if(empty($data)){
				// M01JYUUSHO_LOCATION挿入
				$this->insLocationSql($params, $db);
			}

			// M01JYUUSHO_LOCATION更新
			$this->updLocationSql($params, $db);

			// 住所座標手修正マスタ削除
			$this->delJyuushoManual($params, $db);

			// 住所座標手修正マスタ挿入
			$this->insJyuushoManual($params, $db);

			// コミット
			$this->commitTransaction($db);
		}catch (Exception $e) {
			//ロールバック
			$this->rollbackTransaction($db);
			//DBのエラーメッセージをログに書き出す
			__log_debug(__FILE__, __LINE__, __METHOD__, $e->getMessage());
		}

		//トランザクションEnd
		$db->closeConnection();
	}

	/**
	* 座標取得SQL
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function getDefaultPointSql($params,&$db_params)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];

		$sql = "";
		$sql .= "SELECT";
		$sql .= "        M01_IDO";
		$sql .= "        ,M01_KEIDO";
		$sql .= "    FROM";
		$sql .= "        M01JYUUSHO";
		$sql .= "    WHERE";
		$sql .= "        M01_JYUUSHO_CD = : strJyuushoCd ";
		$sql .= "        AND M01_IDO IS NOT NULL";
		$sql .= "        AND M01_KEIDO IS NOT NULL";

		return $sql;
	}

	/**
	* 座標情報更新SQL
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function updDefaultPointSql($params,$db)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];	// 住所コード
		$db_params["strIdo"] = $params["y"];				// 緯度
		$db_params["strKeido"] = $params["x"];				// 経度

		$sql = "";
		$sql .= "UPDATE";
		$sql .= "        M01JYUUSHO";
		$sql .= "    SET";
		$sql .= "        M01_IDO = : strIdo * 1000";
		$sql .= "        ,M01_KEIDO =  : strKeido  *1000";
		$sql .= "    WHERE";
		$sql .= "        M01_JYUUSHO_CD = : strJyuushoCd ";

		$this->dbExecQuery($sql, $db_params, $db);
	}

	/**
	* M01JYUUSHO_LOCATION存在チェック
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function getCheckLocationSql($params,$db)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];	// 住所コード

		$sql = "";
		$sql .= "SELECT";
		$sql .= "        M01_JYUUSHO_CD";
		$sql .= "    FROM";
		$sql .= "        M01JYUUSHO_LOCATION";
		$sql .= "    WHERE";
		$sql .= "        M01_JYUUSHO_CD = : strJyuushoCd ";

		return $this->dbGetData($sql, $db_params);
	}

	/**
	* M01JYUUSHO_LOCATION挿入
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function insLocationSql($params,$db)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];	// 住所コード

		$sql = "";
		$sql .= "INSERT";
		$sql .= "    INTO";
		$sql .= "        M01JYUUSHO_LOCATION(";
		$sql .= "            M01_JYUUSHO_CD";
		$sql .= "            ,M01_TODOUFUKEN_CD";
		$sql .= "            ,M01_SHIKUCHOUSON_CD";
		$sql .= "            ,M01_CHOUMEI_CD";
		$sql .= "            ,M01_CHOUMOKU_CD";
		$sql .= "            ,M01_TODOUFUKEN";
		$sql .= "            ,M01_SHIKUCHOUSON";
		$sql .= "            ,M01_CHOUMEI";
		$sql .= "            ,M01_CHOUMOKU";
		$sql .= "        )";
		$sql .= "            SELECT";
		$sql .= "                    M01_JYUUSHO_CD";
		$sql .= "                    ,M01_TODOUFUKEN_CD";
		$sql .= "                    ,M01_SHIKUCHOUSON_CD";
		$sql .= "                    ,M01_CHOUMEI_CD";
		$sql .= "                    ,M01_CHOUMOKU_CD";
		$sql .= "                    ,M01_TODOUFUKEN";
		$sql .= "                    ,M01_SHIKUCHOUSON";
		$sql .= "                    ,M01_CHOUMEI";
		$sql .= "                    ,M01_CHOUMOKU";
		$sql .= "                FROM";
		$sql .= "                    M01JYUUSHO";
		$sql .= "                WHERE";
		$sql .= "                    M01_JYUUSHO_CD = : strJyuushoCd ";

		$this->dbExecQuery($sql, $db_params,$db);
	}

	/**
	* M01JYUUSHO_LOCATION座標情報更新
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function updLocationSql($params,$db)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];	// 住所コード

		$sql = "";
		$sql .= "UPDATE";
		$sql .= "        M01JYUUSHO_LOCATION";
		$sql .= "    SET";
		$sql .= "        M01_LOCATION = SDO_GEOMETRY(";
		$sql .= "            2001";
		$sql .= "            ,8301";
		$sql .= "            ,SDO_POINT_TYPE(";
		$sql .= "                ".$params["x"]."* 1000 / 3600000";
		$sql .= "                ,".$params["y"]."* 1000  / 3600000";
		$sql .= "                ,NULL";
		$sql .= "            )";
		$sql .= "            ,NULL";
		$sql .= "            ,NULL";
		$sql .= "        )";
		$sql .= "    WHERE";
		$sql .= "        M01_JYUUSHO_CD = : strJyuushoCd ";

		$this->dbExecQuery($sql, $db_params,$db);
	}

	/**
	* 住所座標手修正マスタ削除
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function delJyuushoManual($params,$db)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];	// 住所コード

		$sql = "";
		$sql .= "DELETE";
		$sql .= "    FROM";
		$sql .= "        M01JYUUSHO_MANUAL";
		$sql .= "    WHERE";
		$sql .= "        M01_JYUUSHO_CD = : strJyuushoCd ";

		$this->dbExecQuery($sql, $db_params,$db);
	}

	/**
	* 住所座標手修正マスタ挿入
	*
	* @access	public
	* @param	array
	* @param	array
	* @return	void
	*/
	public function insJyuushoManual($params,$db)
	{
		$db_params["strJyuushoCd"] = $params["JyuushoCd"];	// 住所コード

		$sql = "";
		$sql .= "INSERT";
		$sql .= "    INTO";
		$sql .= "        M01JYUUSHO_MANUAL(";
		$sql .= "            M01_JYUUSHO_CD";
		$sql .= "            ,M01_IDO_MANUAL";
		$sql .= "            ,M01_KEIDO_MANUAL";
		$sql .= "        )";
		$sql .= "            SELECT";
		$sql .= "                    M01_JYUUSHO_CD";
		$sql .= "                    ,M01_IDO";
		$sql .= "                    ,M01_KEIDO";
		$sql .= "                FROM";
		$sql .= "                    M01JYUUSHO";
		$sql .= "                WHERE";
		$sql .= "                    M01_JYUUSHO_CD = : strJyuushoCd ";

		$this->dbExecQuery($sql, $db_params,$db);
	}
}
?>